package com.tdam2011.grupo06.control;

import java.util.Date;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import com.tdam2011.grupo06.model.Contacto;
import com.tdam2011.grupo06.model.ItemConectividad;
import com.tdam2011.grupo06.model.ItemEmail;
import com.tdam2011.grupo06.model.ItemHistorial;
import com.tdam2011.grupo06.model.MensajeBob;

public class DatabaseHelper extends SQLiteOpenHelper {

	static final String dbName="aplicacionesMovilesTPI";
	static final String contactsTable="Contacts";
	static final String colTableID="ContactTableID";
	static final String colDBID="ContactID";
	static final String telID="TelPrefID";
	static final String colUser="UserName";
	static final String emailsTable="Emails";
	static final String emailsID="EmailID";
	static final String contactID="ContactID";
	static final String direction="Direccion";
	static final String fechaHora="Fecha";
	static final String mensajesTable="Mensajes";
	static final String mensajeID="MensajeID";
	static final String mensajeContactID="ContactID";
	static final String mensajeContent="Contenido";
	static final String mensajeFecha="Fecha";
	static final String mensajeType="Tipo";
	static final String mensajeLeido="Leido";
	static final String conectividadTable="Conectividad";
	static final String conectividadID="ConectividadID";
	static final String conectividadFechaHora="Fecha";
	static final String conectividadTipo="Tipo";
	static final String conectividadAccion="Accion";
	
	private static ThreadLocal<DatabaseHelper> _instance = null;
	
	private DatabaseHelper(Context context) 
	{
		super(context, dbName, null,69);
	}
	
	public static DatabaseHelper getInstance(final Context contex)
	{
		if(_instance==null)
		{
			_instance = new ThreadLocal<DatabaseHelper>() {
				@Override
				protected DatabaseHelper initialValue() {
					return new DatabaseHelper(contex);
				}
			};
		}
		return _instance.get();
	}

	@Override
	public void onCreate(SQLiteDatabase db) 
	{
		db.execSQL("CREATE TABLE "+contactsTable+" ("+colTableID+ " INTEGER PRIMARY KEY AUTOINCREMENT, "+
				colDBID+ " INTEGER, "+telID+ " INTEGER, "+colUser+ " TEXT)");
		
		db.execSQL("CREATE TABLE "+emailsTable+" ("+emailsID+ " INTEGER PRIMARY KEY , "+
				contactID+ " INTEGER, "+direction+ " TEXT, "+fechaHora+ " LONG)");
		
		db.execSQL("CREATE TABLE "+conectividadTable+" ("+conectividadID+ " INTEGER PRIMARY KEY , "+
				conectividadTipo+ " INTEGER, "+conectividadAccion+ " INTEGER, "+conectividadFechaHora+ " LONG)");
		
		db.execSQL("CREATE TABLE "+mensajesTable+" ("+mensajeID+ " INTEGER PRIMARY KEY , "+
				mensajeType+ " INTEGER, "+mensajeContactID+ " INTEGER, "+mensajeFecha+ " LONG , "+mensajeContent+" TEXT, "+mensajeLeido+" INTEGER)");
		
		db.execSQL("CREATE TRIGGER fk_emailContacto_contactoID " +
				" BEFORE INSERT "+
				" ON "+emailsTable+
				
				" FOR EACH ROW BEGIN"+
				" SELECT CASE WHEN ((SELECT "+colTableID+" FROM "+contactsTable+" WHERE "+colTableID+"=new."+contactID+" ) IS NULL)"+
				" THEN RAISE (ABORT,'Foreign Key Violation') END;"+
				"  END;");
		
		db.execSQL("CREATE TRIGGER fk_mensajeContacto_contactoID " +
				" BEFORE INSERT "+
				" ON "+mensajesTable+
				
				" FOR EACH ROW BEGIN"+
				" SELECT CASE WHEN ((SELECT "+colTableID+" FROM "+contactsTable+" WHERE "+colTableID+"=new."+mensajeContactID+" ) IS NULL)"+
				" THEN RAISE (ABORT,'Foreign Key Violation') END;"+
				"  END;");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	{
		db.execSQL("DROP TABLE IF EXISTS "+contactsTable);
		db.execSQL("DROP TABLE IF EXISTS "+emailsTable);
		db.execSQL("DROP TABLE IF EXISTS "+conectividadTable);
		db.execSQL("DROP TABLE IF EXISTS "+mensajesTable);
		db.execSQL("DROP TRIGGER IF EXISTS fk_emailContacto_contactoID");
		db.execSQL("DROP TRIGGER IF EXISTS fk_mensajeContacto_contactoID");
		
		onCreate(db);
	}
	
	public long addContacts(Contacto c)
	{
		SQLiteDatabase db= this.getWritableDatabase();
		
		ContentValues cv=new ContentValues();
		
		cv.put(colDBID, c.getDbId());
		cv.put(telID, c.getTelPref());
		cv.put(colUser, c.getUsuario());
		
		long result = db.insert(contactsTable, null, cv);
		db.close();
		return result;
	}
	 
	 public int getContactsCount()
	 {
		SQLiteDatabase db=this.getWritableDatabase();
		Cursor cur= db.rawQuery("Select * from "+contactsTable, null);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	 }
	 
	 public Cursor getAllContacts()
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 
		 Cursor cur= db.rawQuery("SELECT * FROM "+contactsTable,null);
		 return cur;
	 }
	 
	 public Contacto getContactByTableId(Contacto aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 String[] params=new String[]{String.valueOf(aux.getTableID())};
		 Cursor c=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colTableID+"=?",params);		 
		 if(c.moveToFirst())
		 {
			 aux.setDbId(c.getInt(c.getColumnIndex(colDBID)));
			 aux.setUsuario(c.getString(c.getColumnIndex(colUser)));
			 aux.setTelPref(c.getInt(c.getColumnIndex(telID)));
		 }
		 c.close();
		 db.close();
		 return aux;
	 }
	 
	 public Contacto getContactByDBId(Contacto aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 String[] params=new String[]{String.valueOf(aux.getDbId())};
		 Cursor c=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colDBID+"=?",params);		 
		 if(c.moveToFirst())
		 {
			 aux.setTableID(c.getInt(c.getColumnIndex(colTableID)));
			 aux.setUsuario(c.getString(c.getColumnIndex(colUser)));
			 aux.setTelPref(c.getInt(c.getColumnIndex(telID)));
		 }
		 c.close();
		 db.close();
		 return aux;
	 }
	 
	 public Contacto getContactByUser(Contacto aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 String[] params=new String[]{String.valueOf(aux.getUsuario())};
		 Cursor c=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colUser+"=?",params);		 
		 if(c.moveToFirst())
		 {
			 aux.setDbId(c.getInt(c.getColumnIndex(colDBID)));
			 aux.setTableID(c.getInt(c.getColumnIndex(colTableID)));
			 aux.setTelPref(c.getInt(c.getColumnIndex(telID)));
		 }
		 c.close();
		 db.close();
		 return aux;
	 }
	 
	 public int updatePrefTelByTableId(Contacto aux)
	 {
		 return updatePrefTel(aux.getTableID(), aux.getTelPref(),colTableID);
	 }
	 
	 public int updatePrefTelByDBId(Contacto aux)
	 {
		 return updatePrefTel(aux.getDbId(), aux.getTelPref(),colDBID);
	 }
	 
	 private int updatePrefTel(int id, int tel, String colunmID)
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 ContentValues cv=new ContentValues();
		 cv.put(telID, tel);
		 int result = db.update(contactsTable, cv, colunmID+"=?", new String []{String.valueOf(id)});
		 db.close();
		 return result;
	 }
	 
	 public int updateUserByTableId(Contacto aux)
	 {
		 return updateUser(aux.getTableID(), aux.getUsuario(),colTableID);
	 }
	 
	 public int updateUserByDBId(Contacto aux)
	 {
		 return updateUser(aux.getDbId(), aux.getUsuario(),colDBID);
	 }
	 
	 private int updateUser(int id, String user, String colunmID)
	 {
		 deleteContactAndUpdateMensajes(id,user,colunmID);
		 
		 SQLiteDatabase db=this.getWritableDatabase();
		 ContentValues cv=new ContentValues();
		 cv.put(colUser, user);
		 int result = db.update(contactsTable, cv, colunmID+"=?", new String []{String.valueOf(id)});
		 db.close();
		 return result;
	 }
	 
	 private void deleteContactAndUpdateMensajes(int id, String user, String colunmID)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 Cursor c=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colUser+"=?",new String[]{user});
		 if(c.moveToFirst())
		 {
			 int tableID = c.getInt(c.getColumnIndex(colTableID));
			 Cursor cur=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colunmID+"=?",new String[]{String.valueOf(id)});		 
			 if(cur.moveToFirst())
			 {
				 int newTableID = cur.getInt(cur.getColumnIndex(colTableID));
				 ContentValues cv=new ContentValues();
				 cv.put(mensajeContactID, newTableID);
				 db.update(mensajesTable, cv, mensajeContactID+"=?", new String []{String.valueOf(tableID)});
				 db.delete(contactsTable, colTableID+"=?", new String []{String.valueOf(tableID)});
			 }
			 cur.close();
		 }
		 c.close();
		 db.close();
	 }
	 
	 public void deleteContactByTableId(Contacto aux)
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 db.delete(contactsTable,colTableID+"=?", new String [] {String.valueOf(aux.getTableID())});
		 db.close();
	 }
	 
	 public void deleteContactByDBId(Contacto aux)
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 db.delete(contactsTable,colDBID+"=?", new String [] {String.valueOf(aux.getDbId())});
		 db.close();
	 }
	 
	 public boolean existsContactByTableId(Contacto aux)
	 {
		 return existsContact(aux.getTableID(),colTableID);
	 }
	 
	 public boolean existsContactByDBId(Contacto aux)
	 {
		 return existsContact(aux.getDbId(),colDBID);
	 }
	 
	 private boolean existsContact(int id, String colunmID)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 boolean result = false;
		 
		 String[] params=new String[]{String.valueOf(id)};
		 Cursor c=db.rawQuery("SELECT * FROM "+ contactsTable +" WHERE "+colunmID+"=?",params);

		 result = c.moveToFirst();
		 c.close();
		 db.close();
		 return result;
	 }
	 
	public void addEmail(ItemEmail e)
	{
		SQLiteDatabase db= this.getWritableDatabase();
		
		ContentValues cv=new ContentValues();
		
		cv.put(contactID, e.getIdContacto());
		cv.put(direction, e.getNumero());
		cv.put(fechaHora, e.getFecha().getTime());
		
		db.insert(emailsTable, emailsID, cv);
		db.close();
	}
	
	public int getEmailsCount()
	{
		SQLiteDatabase db=this.getReadableDatabase();
		Cursor cur= db.rawQuery("Select * from "+emailsTable, null);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	}
	 
	public Cursor getAllEmails()
	{
		SQLiteDatabase db=this.getReadableDatabase();
		 
		Cursor cur= db.rawQuery("SELECT * FROM "+emailsTable,null);
		return cur;
	}
	 
	public Cursor getAllEmailsOfContactoByTableId(Contacto aux)
	{
		return getAllEmailsOfContacto(aux.getTableID(),colTableID);
	}
	
	public Cursor getAllEmailsOfContactoByDBId(Contacto aux)
	{
		return getAllEmailsOfContacto(aux.getDbId(),colDBID);
	}
	
	private Cursor getAllEmailsOfContacto(int id, String colunmID)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		 
		String[] params=new String[]{String.valueOf(id)};
		Cursor cur=db.rawQuery("SELECT * FROM "+ emailsTable +" WHERE "+contactID+"=(SELECT "+colTableID+" FROM "+ contactsTable +" WHERE "+colunmID+"=?)",params);
		return cur;
	}
	
	public void addItemConectividad(ItemConectividad ic)
	{
		SQLiteDatabase db= this.getWritableDatabase();
		
		ContentValues cv=new ContentValues();
		
		cv.put(conectividadTipo, ic.getTipo());
		cv.put(conectividadFechaHora, ic.getFecha().getTime());
		cv.put(conectividadAccion, ic.getAccion());
		
		db.insert(conectividadTable, conectividadID, cv);
		db.close();
	}
	 
	 public int getItemConectividadEGCount()
	 {
		SQLiteDatabase db=this.getWritableDatabase();
		String[] params=new String[]{String.valueOf(ItemConectividad.tipo3G)};
		Cursor cur=db.rawQuery("SELECT * FROM "+ conectividadTable +" WHERE "+conectividadTipo+"=?",params);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	 }
	 
	 public int getItemConectividadWIFICount()
	 {
		SQLiteDatabase db=this.getWritableDatabase();
		String[] params=new String[]{String.valueOf(ItemConectividad.tipoWIFI)};
		Cursor cur=db.rawQuery("SELECT * FROM "+ conectividadTable +" WHERE "+conectividadTipo+"=?",params);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	 }
	 
	 public Cursor getAllItemConectivida3G()
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 String[] params=new String[]{String.valueOf(ItemConectividad.tipo3G)};
		 Cursor cur=db.rawQuery("SELECT * FROM "+ conectividadTable +" WHERE "+conectividadTipo+"=?",params);
		 return cur;
	 }
	 
	 public Cursor getAllItemConectividadWIFI()
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 String[] params=new String[]{String.valueOf(ItemConectividad.tipoWIFI)};
		 Cursor cur=db.rawQuery("SELECT * FROM "+ conectividadTable +" WHERE "+conectividadTipo+"=?",params);
		 return cur;
	 }
	 
	 public Cursor getAllItemConectividad()
	 {
		 SQLiteDatabase db=this.getWritableDatabase();
		 
		 Cursor cur= db.rawQuery("SELECT * FROM "+conectividadTable,null);
		 return cur;
	 }
	 
	 public ItemConectividad getItemConectividad(ItemConectividad aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 String[] params=new String[]{String.valueOf(aux.getId())};
		 Cursor c=db.rawQuery("SELECT * FROM "+ conectividadTable +" WHERE "+conectividadID+"=?",params);
		 if(c.moveToFirst())
		 {
			 aux.setTipo(c.getInt(c.getColumnIndex(conectividadTipo)));
			 aux.setAccion(c.getInt(c.getColumnIndex(conectividadAccion)));
			 aux.setFecha(new Date((c.getLong(c.getColumnIndex(conectividadFechaHora)))));
		 }
		 c.close();
		 db.close();
		 return aux;
	 }
	 
	 public Cursor getAllMensajesBob()
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 
		 Cursor cur= db.rawQuery("SELECT * FROM "+mensajesTable,null);
		 return cur;
	 }
	 
	 public Cursor getAllMensajesBobOfContactoByTableId(Contacto aux, boolean recibidos, boolean enviados)
	 {
		 return getAllMensajesBobOfContacto(aux.getTableID(),colTableID,recibidos,enviados);
	 }
	 
	 public Cursor getAllMensajesBobOfContactoByDBId(Contacto aux, boolean recibidos, boolean enviados)
	 {
		 return getAllMensajesBobOfContacto(aux.getDbId(),colDBID,recibidos,enviados);
	 }
	 
	 public Cursor getAllMensajesBobOfContacto(int id, String colunmID, boolean recibidos, boolean enviados)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 Cursor cur;
		 if(recibidos ^ enviados)
		 {
			 String[] params;
			 if(recibidos){
				 params = new String[]{String.valueOf(id),String.valueOf(MensajeBob.recibido)};
			 }
			 else{
				 params = new String[]{String.valueOf(id),String.valueOf(MensajeBob.enviado)};
			 }
			 cur= db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeContactID+"=(SELECT "+colTableID+" FROM "+ contactsTable +" WHERE "+colunmID+"=?) and "+mensajeType+"=?",params);
		 }
		 else{
			 cur=db.rawQuery("SELECT * FROM "+ mensajesTable +" WHERE "+mensajeContactID+"=(SELECT "+colTableID+" FROM "+ contactsTable +" WHERE "+colunmID+"=?)",new String[]{String.valueOf(id)});
		 }
		 return cur;
	 }
	 
	 public int getMensajesBobCount()
	 {
		SQLiteDatabase db=this.getWritableDatabase();
		Cursor cur= db.rawQuery("Select * from "+mensajesTable, null);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	 }
	 
	 public void addMensajeBob(MensajeBob m)
	 {
		 SQLiteDatabase db= this.getWritableDatabase();
		 
		 ContentValues cv=new ContentValues();
		 
		 cv.put(mensajeContactID, m.getIdContacto());
		 cv.put(mensajeContent, m.getContent());
		 cv.put(mensajeType, m.getTipo());
		 cv.put(mensajeFecha, m.getFecha().getTime());
		 
		 cv.put(mensajeLeido, m.getFueLeido());
		 
		 db.insert(mensajesTable, mensajeID, cv);
		 db.close();
	 }
	 
	 public MensajeBob getLastMensajesBob(MensajeBob aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 Cursor cur= db.rawQuery("SELECT * FROM "+mensajesTable+" order by "+mensajeFecha+" asc" ,null); 
		 if(cur.moveToFirst())
		 {
			 Date fecha = new Date(cur.getLong(cur.getColumnIndex(mensajeFecha)));
			 aux.setFecha(fecha);
		 }
		 cur.close();
		 return aux;
	 }

	public int getMensajesBobCountRecibidos() 
	{
		SQLiteDatabase db=this.getWritableDatabase();
		String[] params=new String[]{String.valueOf(MensajeBob.recibido)};
		Cursor cur= db.rawQuery("Select * from "+mensajesTable+" WHERE "+mensajeType+"=?",params);
		int x= cur.getCount();
		cur.close();
		db.close();
		return x;
	}
	
	public MensajeBob getLastMensajesBobRecibido(MensajeBob aux)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();
		 String[] params=new String[]{String.valueOf(MensajeBob.recibido)};
		 Cursor cur= db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeType+"=? "+" order by "+mensajeFecha+" desc",params); 
		 if(cur.moveToFirst())
		 {
			 Date fecha = new Date(cur.getLong(cur.getColumnIndex(mensajeFecha)));
			 aux.setFecha(fecha);
		 }
		 cur.close();
		 return aux;
	 }
	
	public int getTableIdbyUser(String user)
	{
		return getTableIdbyUser(user, colTableID);
	}
	
	public int getDBIdbyUser(String user)
	{
		return getTableIdbyUser(user, colDBID);
	}
	
	private int getTableIdbyUser(String user, String colunmID)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		String[] params=new String[]{user};
		Cursor cur= db.rawQuery("SELECT * FROM "+contactsTable+" WHERE "+colUser+"=?",params);
		if(cur.moveToFirst())
		{
			return cur.getInt(cur.getColumnIndex(colunmID));
		}
		cur.close();
		return 0;
	}
	
	public MensajeBob getLastMensajesBobofConctac(MensajeBob aux, boolean recibidos, boolean enviados)
	{
		SQLiteDatabase db=this.getReadableDatabase();
		Cursor cur, cur2;
		if(recibidos ^ enviados){
			String[] params,params2;
			if(recibidos){
				params = new String[]{String.valueOf(aux.getIdContacto()),String.valueOf(MensajeBob.recibido)};
				params2 = new String[]{String.valueOf(aux.getIdContacto()),String.valueOf(MensajeBob.recibido),String.valueOf(MensajeBob.noLeido)};
			}
			else{
				params = new String[]{String.valueOf(aux.getIdContacto()),String.valueOf(MensajeBob.enviado)};
				params2 = new String[]{String.valueOf(aux.getIdContacto()),String.valueOf(MensajeBob.recibido),String.valueOf(MensajeBob.noLeido)};
			}
			cur= db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeContactID+"=? and "+mensajeType+"=? order by "+mensajeFecha+" desc",params);
			cur2 = db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeContactID+"=? and "+mensajeType+"=? and "+mensajeLeido+"=?  order by "+mensajeFecha+" desc",params2);
		}
		else{
			cur= db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeContactID+"=? "+" order by "+mensajeFecha+" desc",new String[]{String.valueOf(aux.getIdContacto())});
			cur2= db.rawQuery("SELECT * FROM "+mensajesTable+" WHERE "+mensajeContactID+"=? and "+mensajeLeido+"=? order by "+mensajeFecha+" desc",new String[]{String.valueOf(aux.getIdContacto()),String.valueOf(MensajeBob.noLeido)});
		}
		if(cur.moveToFirst())
		{
			aux.setId(cur.getInt(cur.getColumnIndex(mensajeID)));
			aux.setTipo(cur.getInt(cur.getColumnIndex(mensajeType)));
			aux.setContent(cur.getString(cur.getColumnIndex(mensajeContent)));
			aux.setFecha(new Date(cur.getLong(cur.getColumnIndex(DatabaseHelper.mensajeFecha))));
			aux.setCantidad(cur.getCount());
			if(cur2.getCount()>0) {
				aux.setFueLeido(MensajeBob.noLeido);
			}
			else {
				aux.setFueLeido(MensajeBob.leido);
			}
		}
		cur.close();
		return aux;
	 }

	public int getCountMensajesBobOfContactoByTableId(Contacto aux)
	 {
		 return getCountMensajesBobOfContacto(aux.getTableID(),colTableID);
	 }
	 
	 public int getCountMensajesBobOfContactoByDBId(Contacto aux)
	 {
		 return getCountMensajesBobOfContacto(aux.getDbId(),colDBID);
	 }
	 
	 public int getCountMensajesBobOfContacto(int id, String colunmID)
	 {
		 SQLiteDatabase db=this.getReadableDatabase();		 
		 String[] params=new String[]{String.valueOf(id)};
		 Cursor cur=db.rawQuery("SELECT * FROM "+ mensajesTable +" WHERE "+mensajeContactID+"=(SELECT "+colTableID+" FROM "+ contactsTable +" WHERE "+colunmID+"=?)",params);
		 int result = cur.getCount();
		 cur.close();
		 db.close();
		 return result;
	 }

	public void eliminarItemHistorial(ItemHistorial itemHistorial) {
		SQLiteDatabase db=this.getReadableDatabase();
		String[] params = new String []{String.valueOf(itemHistorial.getId())};
		if(itemHistorial instanceof MensajeBob){
			db.delete(mensajesTable, mensajeID+"=?", params);
		}
		else if (itemHistorial instanceof ItemEmail){
			db.delete(emailsTable, emailsID+"=?", params);
		}
		db.close();
	}
	
	public int actualizarLeidosMensajesDeContacto(Contacto aux) {
		SQLiteDatabase db=this.getReadableDatabase();		 
		ContentValues cv=new ContentValues();
		 cv.put(mensajeLeido, MensajeBob.leido);
		 int result = db.update(mensajesTable, cv, mensajeContactID+"=?", new String []{String.valueOf(aux.getTableID())});
		 db.close();
		 return result;
	}
	
}
